<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUserActivityRequestsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //志愿者报名活动申请表
        //记住，志愿者申请加入活动前，需要先判断该活动是否开放加入，如果活动不开放，那么需要等待志愿者加入改志愿者主办团队之后才可以申请加入活动
        Schema::create('user_activity_requests', function (Blueprint $table) {
            $table->bigIncrements('id')->unsigned();
            $table->bigInteger('user_id')->unsigned()->comment('申请志愿者用户id');
            $table->foreign('user_id')->references('id')->on('users');

            $table->integer('activity_id')->unsigned()->comment('所申请加入活动id');
            $table->foreign('activity_id')->references('id')->on('activities');

            //志愿者在申请报名某个活动时，需要弹出界面让其选择到底报名哪个城市的
            //如果这个活动之后只在一个城市举办，那就不需要选择，这里自动填上那个城市的id
            $table->integer('city_id')->unsigned()->comment('用户参与申请活动的cityid');
            $table->foreign('city_id')->references('id')->on('cities');

            //申请时间，申请的时间
            $table->dateTime('request_time')->nullable()->comment('申请时间');
            //活动主办方审核处理的时间
            $table->dateTime('process_time')->nullable()->comment('处理时间');
            //活动主办方的处理结果，只有两种可能，不通过（0），通过（1）
            //如果不通过，需要说明拒绝原因，此时志愿者并未加入活动，后面志愿者可以再次申请加入活动，产生新的申请记录
            //如果审核通过的话，志愿者将加入活动，并且无法再次申请加入该活动
            //        数据逻辑：创建user_activities表的记录，默认状态为未签到
            $table->tinyInteger('process_result')->nullable()->comment('处理结果：0=不通过，1=通过');
            $table->string('deny_reason', 200)->nullable()->comment('不通过的原因');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('user_activity_requests', function ($table) {
            $table->dropForeign(['activity_id']);
            $table->dropForeign(['user_id']);
            $table->dropForeign(['city_id']);
        });
        Schema::dropIfExists('user_activity_requests');
    }
}
